package com.yqh.Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * Collection 集合的遍历方式1：迭代器 + while 循环
 * @author 阳秋豪
 * @createTime 2024/3/5
 */
public class Test3 {
    public static void main(String[] args) {
        // 迭代器 -- 用来遍历集合的专用方法（数组没有迭代器），在java中迭代器的代表就是Iterator
        /*------------------------ 迭代器 ------------------------*/
        Collection<String> collection = new ArrayList<>();
        collection.add("张三");
        collection.add("李四");
        collection.add("王五");
        System.out.println("collection -- " + collection); // collection -- [张三, 李四, 王五]
        // 1、Iterator<E> iterator();
        // 描述 -- 返回此集合中元素的迭代器
        Iterator<String> iterator = collection.iterator();
        System.out.println(iterator); // java.util.ArrayList$Itr@3d8c7aca

        // 2、E next();
        // 描述 -- 返回迭代中的下一个元素
        // 可能异常 -- NoSuchElementException -- 没有更多迭代元素
        // System.out.println(iterator.next()); // 张三
        // System.out.println(iterator.next()); // 李四
        // System.out.println(iterator.next()); // 王五
        // 使用循环结合迭代器遍历集合
        while (iterator.hasNext()) {
            // System.out.println(iterator.next()); // 效果同上
            String next = iterator.next();
            System.out.println(next); // 建议这样写
        }

        /*------------------------ 问题 ------------------------*/
        // 1、如何获取集合的迭代器？迭代器遍历集合的代码具体怎么写？
        // 答：① Collection.iterator(); ② 迭代器.hasNext() + 迭代器.next()

        // 2、通过迭代器获取集合的元素，如果取元素越界会出现什么异常。
        // 答：NoSuchElementException

    }
}
